<?php

namespace App\Controller;

use Cake\Event\Event;
use Cake\ORM\TableRegistry;

class CadastroController extends AppController {

    public $components = ['Url', 'Flash'];
    public $helpers = ['Link'];

    public function beforeFilter(Event $event) {
        parent::beforeFilter($event);
        $this->Auth->allow('index');
    }

    public function isAuthorized($user = null) {
        if (isset($user['role']) && ($user['role'] === 'cliente')) {
            return true;
        }
        return false;
    }

    public function index($id) {
        if ($this->request->is('post')) {
            $this->save($id);
            return;
        }
        $emissoras = TableRegistry::get('Emissoras');
        $emissora = $emissoras->get($id);
        $emissora->ofuscar_CpfCnpj();
        $errors = array();
        $this->set(compact('errors', 'emissora'));
    }

    public function save($id) {
        $emissoras = TableRegistry::get('Emissoras');
        $emissora = $emissoras->get($id);
        $emissoras->patchEntity($emissora, $this->request->data);
        $emissora->set('cpf_cnpj', $this->request->data['cpf_cnpj']);

        $errors = array();
        if (!$emissoras->validate($emissora)) {
            $errors = $emissora->errors();
            $emissora->ofuscar_CpfCnpj(true);
            $this->set(compact('errors', 'emissora'));
            return;
        }
        if (!isset($this->request->data['termos_uso'])) {
            $errors['termo_uso'] = ["Você deve aceitar os termos para afiliar-se!"];
            $this->set(compact('errors', 'emissora'));
            return;
        }

        $emissora->iniciar();
        if (!$emissoras->save($emissora)) {
            $errors = $emissora->errors();
            $emissora->ofuscar_CpfCnpj(true);
            $this->set(compact('errors', 'emissora'));
            return;
        }

        $this->Flash->success('Cadastro realizado com sucesso');
        return $this->redirect(['controller' => 'home', 'action' => 'obrigado']);
    }

    public function complementar() {
        $id = $this->Auth->user('abert_emissora_id');
        $emissoras = TableRegistry::get('Emissoras');
        $emissora = $emissoras->get($id);

        if ($this->request->is('post')) {
            $this->complementarPost($emissoras, $emissora);
            return;
        }

        $errors = array();
        $this->set(compact('errors', 'emissora'));
    }

    public function complementarPost($emissoras, $emissora) {
        $emissoras->patchEntity($emissora, $this->request->data, [
            'fieldList' => ['nome_empresa', 'palavra_chave', 'mensagem_compartilhamento',
                'facebook', 'link_integracao_programacao', 'latitude', 'longitude',
                'nome_provedor_streaming', 'streaming', 'twitter', 'link_rds']]
        );


        $errors = array();
        $emissora->finalizar();
        $result = $emissoras->save($emissora, ['validate' => 'finalizar']);
        if ($result) {
            $result = $emissoras->saveLogo($emissora, $this->request->data['submittedfile']);
            if ($result) {
                $emissora->complementar();
                $result = $emissoras->save($emissora);
            }
        }
        if (!$result) {
            $errors = $emissora->errors();
            $this->set(compact('errors', 'emissora'));
            return;
        }

        $this->Flash->success('Cadastro realizado com sucesso');
        $this->set(compact('errors', 'emissora'));
        return $this->redirect(['controller' => 'cadastro', 'action' => 'complementar']);
    }

}
